import csv
import json
import argparse
import os

def clean_text(text):
    """去除文本首尾空白"""
    return text.strip() if isinstance(text, str) else ""

def convert_csv_to_json(csv_file_path, json_file_path):
    data = []

    with open(csv_file_path, 'r', encoding='utf-8-sig') as csvfile:
        # 由于你的CSV只有text1一列，且第一行是列名
        reader = csv.DictReader(csvfile)
        print("实际列名:", list(reader.fieldnames))  # 👈 加这一行
        
        for row in reader:
            text = row.get('text1', '')
            print(f"处理行: {text}")
            if not text or '|' not in text:
                print(f"跳过无效行: {text}")
                continue

            # 按第一个 '|' 分割（防止回答中也有 |）
            parts = text.split('|', 1)
            instruction = clean_text(parts[0])
            output = clean_text(parts[1])

            # 构造标准格式
            item = {
                "instruction": instruction,
                "input": "",
                "output": output
            }
            data.append(item)

    # 写入 JSON 文件
    with open(json_file_path, 'w', encoding='utf-8') as jsonfile:
        json.dump(data, jsonfile, ensure_ascii=False, indent=2)

    print(f"✅ 转换完成！共处理 {len(data)} 条数据。")
    print(f"📁 已保存至: {json_file_path}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="将包含 'text1' 列的 CSV 文件转换为 JSON 格式")
    parser.add_argument("--csv", type=str, default="train.csv", help="输入的 CSV 文件路径")
    parser.add_argument("--json", type=str, default="train.json", help="输出的 JSON 文件路径")

    args = parser.parse_args()

    if not os.path.exists(args.csv):
        raise FileNotFoundError(f"❌ 找不到 CSV 文件: {args.csv}")

    convert_csv_to_json(args.csv, args.json)